import java.io.*;
import java.util.Arrays;

//022. 姓名分值
//        文件 names.txt 是一个 46K 大小的文本文件，包含 5000 多个英文名字。
//        利用这个文件，首先将文件中的名字按照字母排序，然后计算每个名字的字母值，最后将字
//        母值与这个名字在名字列表中的位置相乘，得到这个名字的得分。
//        例如：将名字列表按照字母排序后， COLIN 这个名字是列表中的第 938 个，它的字母值是
//        3 + 15 + 12 + 9 + 14 = 53。
//        所以 COLIN 这个名字的得分就是 938 × 53 = 49714
//        计算：文件中所有名字的得分总和是多少？
//        答案：871198282
public class Week022 {
    static void run() {
        File file = new File("names.txt");
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line = "";
            String str = "";
            while ((line = br.readLine()) != null) {
                line = line.replace("\"", "");//将双引号去除
                str += line;
            }
            String[] names = str.split(",");//以逗号分割
            Arrays.sort(names);//数组默认升序排序
            long ans = 0;
            for (int i = 0, endi = names.length; i < endi; ++i) {
                long sum = 0;
                for (int j = 0, endj = names[i].length(); j < endj; ++j) {
                    sum += names[i].charAt(j) - 'A' + 1;
                }
                ans += sum * (i + 1);
            }
            System.out.println(ans);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        long startTime = System.nanoTime();
        run();
        System.out.println("\n程序运行时间：" + (System.nanoTime() - startTime) + "ns.");
    }
}
